#include <memory>
#include <mutex>
#include <functional>
#include "ThreadPool.h"
using std::unique_lock;
using std::mutex;
using std::bind;


mutex mtx;
class MyTask{
    static int cnt;
public:
    void process(){
        unique_lock<mutex> uniqueLock(mtx);
        printf("test %d\n", cnt++);
    }
};
int MyTask::cnt = 1;

/**
 * 问题一：添加任务20次，但是没有全部执行就退出来了
 *      主线程执行stop，提前将_isExit设置为true，任务未完全取出就退出了
 *
 * 问题二：线程池无法退出
 *      加标记位
 *
 * @return
 */
int main() {
    std::unique_ptr<MyTask> pMyTask(new MyTask());
    ThreadPool pool(4, 10);
    pool.start();

    int cnt = 1;
    while(cnt <= 20){
        pool.addTask(bind(&MyTask::process, pMyTask.get()));
        printf("add cnt = %d\n", cnt++);
    }


    pool.stop();
    return 0;
}
